package sample4.provider.dml;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;

/**
 * <pre>
 * ...
 * SqliteUpdateBuilder sql = new SqliteUpdateBuilder(uri);
 * sql.addContentValue("key", 0);
 * sql.whereAndEquals("_id", 10);
 * int update = sql.update(getContentResolver());
 * ...
 * </pre>
 */
public class SqliteUpdateBuilder extends AbsDmlBuilder {
    private ContentValues mValues;

    /**
     * コンストラクタ
     * 
     * @param uri 更新対象
     */
    public SqliteUpdateBuilder(Uri uri) {
        super(uri);
        mValues = new ContentValues();
    }

    /**
     * カラム値を設定する
     * 
     * @param key カラム名
     * @param value カラム値
     */
    public void addContentValue(String key, Boolean value) {
        mValues.put(key, value);
    }

    /**
     * カラム値を設定する
     * 
     * @param key カラム名
     * @param value カラム値
     */
    public void addContentValue(String key, Byte value) {
        mValues.put(key, value);
    }

    /**
     * カラム値を設定する
     * 
     * @param key カラム名
     * @param value カラム値
     */
    public void addContentValue(String key, byte[] value) {
        mValues.put(key, value);
    }

    /**
     * カラム値を設定する
     * 
     * @param key カラム名
     * @param value カラム値
     */
    public void addContentValue(String key, Double value) {
        mValues.put(key, value);
    }

    /**
     * カラム値を設定する
     * 
     * @param key カラム名
     * @param value カラム値
     */
    public void addContentValue(String key, Float value) {
        mValues.put(key, value);
    }

    /**
     * カラム値を設定する
     * 
     * @param key カラム名
     * @param value カラム値
     */
    public void addContentValue(String key, Integer value) {
        mValues.put(key, value);
    }

    /**
     * カラム値を設定する
     * 
     * @param key カラム名
     * @param value カラム値
     */
    public void addContentValue(String key, Long value) {
        mValues.put(key, value);
    }

    /**
     * カラム値を設定する
     * 
     * @param key カラム名
     * @param value カラム値
     */
    public void addContentValue(String key, Short value) {
        mValues.put(key, value);
    }

    /**
     * カラム値を設定する
     * 
     * @param key カラム名
     * @param value カラム値
     */
    public void addContentValue(String key, String value) {
        mValues.put(key, value);
    }

    /**
     * カラム値の更新を行う
     * 
     * @param contentResolver
     * @return　更新されたレコード件数
     */
    public int update(ContentResolver contentResolver) {
        String where = null;
        String[] whereArgs = null;

        // WHERE ~ AND ~
        where = getWhere();
        whereArgs = getWhereArgs();

        return contentResolver.update(mUri, mValues, where, whereArgs);
    }

}
